home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / ms_dos / nifp / nifp.h < prev    next >
Text File  |  1993-07-08  |  15KB  |  523 lines

  1. /*
  2.  *     このモジュールは,NIFPのインクルードファイルです。
  3.  *     このモジュールは,マシン依存していません。
  4.  */
  5.  
  6. #include <dos.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <io.h>
  10. #include <fcntl.h>
  11. #include <string.h>
  12. #include <ctype.h>
  13. #include <errno.h>
  14. #include <jctype.h>
  15. #include <jstring.h>
  16. #include <sys/types.h>
  17. #include <sys/stat.h>
  18. #include <conio.h>
  19. #include <time.h>
  20. #include <alloc.h>
  21. #include <dir.h>
  22.  
  23. #define scldown() scroll(1,1,3,80,line-2)
  24. #define sclup() scroll(0,1,3,80,line-2)
  25.  
  26. #define MAXPOINT 9999        /* タイトル最大数 */
  27. #define MAXLINE 999            /* 内容表示最大行数 */
  28. #define FMAXFILE 128        /* 最大ファイル数 */
  29. #define MAXDATF 1000        /* 最大記憶ファイル数 */
  30. #define MAXCUTNO 50            /* 最大カット文字列記憶数 */
  31. #define MAXMSGNO 10            /* 最大フォーラム3回メッセージ文字列記憶数 */
  32. #define MAXTBL (16384/sizeof(PCELL2))
  33.  
  34. /* タイトルテーブル構造体 */
  35. typedef struct p_cell2 {    /* 内容テーブル */
  36.     int            fno;        /* ファイルNo. */
  37.     long        top,tail;    /* 先頭ファイルポインタ,最終ファイルポインタ */
  38.     long        lineno;
  39.     int            cmt;        /* コメントツリーのネスト数 */
  40.     char        nifid[8];    /* NIFTY-ID */
  41.     int            id,cno,cid;    /* 発言番号,コメント数,コメント番号 */
  42.     char        title[81];    /* タイトル文字列 */
  43. } PCELL2;
  44.  
  45. typedef struct p_cell {        /* 管理テーブル */
  46.     struct p_cell far *next; /* 次ポインタ */
  47.     struct p_cell far *back; /* 前ポインタ */
  48.     char        mode,flag;    /* モード,フラグ */
  49.     int            count;        /* タイトルNo. */
  50.     struct p_cell far *grp;    /* グループタイトルテーブルポインタ */
  51.     int            lno;        /* ページNo. */
  52.     struct p_cell2 far *p;    /* 内容テーブルポインタ */
  53. } PCELL;
  54.  
  55. typedef struct p_cell3 {
  56.     PCELL tbl[MAXTBL];
  57.     struct p_cell3 far *next;
  58. } PCELL3;
  59.  
  60. /*    タイトル区分コード(タイトルテーブルのモード) */
  61. #define NHP        2        /* ホームパーティ受信 */
  62. #define NMAIL    3        /* 電子メール受信 */
  63. #define NFORUM    4        /* フォーラム会議室受信 */
  64. #define NNEWS    5        /* ニュース */
  65. #define NBBS    6        /* 掲示板 */
  66. #define NMEMBER    8        /* 会員情報(*) */
  67. #define NCB        10        /* CB(*) */
  68. #define NNOTE    11        /* お知らせ */
  69. #define NBILL    12        /* 課金情報(*) */
  70. #define NBYE    13        /* ログアウト(*) */
  71. #define NSINBUN    14        /* 新聞情報 */
  72. #define NLIB    15        /* フォーラムライブラリデータ(*) */
  73. #define NHPWRITE 16        /* HPの送信 */
  74. #define NFWRITE    17        /* フォーラムの送信 */
  75. #define NGUEST    18        /* HPのゲスト情報 */
  76. #define NFRT    19        /* フォーラム会議室タイトル一覧(*) */
  77. #define NFRS    20        /* フォーラム会議室検索一覧(*) */
  78. #define NLIBNO    21        /* フォーラムデータライブラリ一覧(*) */
  79. #define NLIBDATA 22        /* フォーラムデータライブラリデータ */
  80. #define NFRTIME 23        /* フォーラムリアルタイム会議(*) */
  81. #define NFNEWS    24        /* フォーラムニュース */
  82. #define NFBBS    25        /* フォーラム掲示板 */
  83. #define NMES    26        /* フォーラム会議室(*) */
  84. #define NMWRITE    27        /* 電子メールの送信 */
  85. #define NWRITE    28        /* その他の送信 */
  86. #define NPROF    29        /* 会員情報 */
  87. #define NINFO    30        /* 情報サービス */
  88. #define NTENKI    31        /* 天気情報 */
  89. #define NMRCV    32        /* 電子メール受信リスト(*) */
  90. #define NSDL    33        /* 電子メール送信簿(*) */
  91. #define NRCL    34        /* 電子メール受信簿(*) */
  92. #define NOPT    35        /* オプション設定(*) */
  93. #define NM2WRITE 36        /* 電子メールの送信(*)(AIR CRAFT用) */
  94. #define NPATIO    37        /* パティオ会議(*) */
  95. #define NPGUEST    38        /* パティオのゲスト情報 */
  96. #define NFORUM2    39        /* フォーラム3回メッセージ情報 */
  97. #define NHPHEAD    128        /* HPタイトル */
  98. #define NMAILHEAD 129    /* 電子メールタイトル */
  99. #define NFORUMHEAD 130    /* フォーラムタイトル */
  100. #define NNEWSHEAD 131    /* ニュースタイトル */
  101. #define NBBSHEAD 132    /* 掲示板タイトル */
  102. #define NCBHEAD    133        /* CBタイトル */
  103. #define NNOTEHEAD 134    /* お知らせタイトル */
  104. #define NBILLHEAD 135    /* 課金情報タイトル */
  105. #define NBYEHEAD 136    /* ログアウトタイトル */
  106. #define NSINBUNHEAD 137    /* 新聞情報タイトル */
  107. #define NLIBHEAD 138    /* フォーラムデータライブラリタイトル */
  108. #define NMESHEAD 139    /* フォーラム会議室タイトル */
  109. #define NFRTHEAD 140    /* フォーラム会議室タイトル一覧 */
  110. #define NFRSHEAD 141    /* フォーラム会議室検索一覧 */
  111. #define NFRTIMEHEAD 142    /* フォーラムリアルタイム会議 */
  112. #define NFNEWSHEAD 143    /* フォーラムニュースタイトル */
  113. #define NFBBSHEAD 144    /* フォーラム掲示板タイトル */
  114. #define NLIBNOHEAD 145    /* フォーラムデータライブラリ一覧 */
  115. #define NMESNOHEAD 146    /* フォーラム会議室一覧 */
  116. #define NMEMBERHEAD 147    /* 会員情報タイトル */
  117. #define NINFOHEAD 148    /* 情報サービスタイトル */
  118. #define NMRCVHEAD 149    /* 電子メール受信リストタイトル */
  119. #define NSDLHEAD 150    /* 電子メール送信簿タイトル */
  120. #define NRCLHEAD 151    /* 電子メール受信簿タイトル */
  121. #define NTITLE    152        /* HPのタイトル一覧 */
  122. #define NINIT    153        /* オープニング */
  123. #define NTOP    154        /* トップメニュー */
  124. #define NMYFORUM 155    /* MYFORUM一覧 */
  125. #define NOPTHEAD 156    /* オプション設定 */
  126. #define NPATIOHEAD 157    /* パティオ会議タイトル */
  127. #define NETC    253        /* その他 */
  128. #define NSEPA    254        /* セパレータ */
  129. #define NEND    255        /* END */
  130.  
  131. /* 表示モードフラグ */
  132. #define NFNORMAL 1        /* ノーマル */
  133. #define NFCOMENT 2        /* コメント */
  134. #define NFCOMENTID 3    /* コメントID */
  135. #define NFSEARCH 4        /* 検索 */
  136. #define NFID     5        /* ID */
  137. #define NFAUTO1     6        /* 自動表示中 */
  138. #define NFAUTO2     7        /* 自動表示一時停止 */
  139.  
  140. /* タイトルテーブルフラグ */
  141. #define FSENTAKU 0x80    /* 選択 */
  142. #define FSAKUJYO 0x40    /* 削除 */
  143. #define FTAG     0x20    /* タグ */
  144. #define FYOMI     0x10    /* 既読 */
  145. #define FJUMP     0x08    /* タグ・検索時のジャンプ用 */
  146. #define FCYCLE     0x04    /* サイクリック会議室フラグ */
  147. #define FDISP     0x01    /* 有効フラグ */
  148.  
  149. /* タイトル区分用特殊分類 */
  150. #define SWRITE    1        /* 発言 */
  151. #define SGUEST    2        /* HPのGUESTコマンド */
  152. #define STITLE    3        /* HPのTITLEコマンド */
  153. #define SPROF    4        /* PROFコマンド */
  154.  
  155. /* 画面表示色カスタマイズ番号 */
  156. #define IROMAX    39
  157. #define IFILE    0
  158. #define INIFMODE 1
  159. #define ITITLE    2
  160. #define IMODE    3
  161. #define IHEAD    4
  162. #define IRHEAD    5
  163. #define IETC    6
  164. #define IRETC    7
  165. #define ISEPA    8
  166. #define IRSEPA    9
  167. #define IEND    10
  168. #define IREND    11
  169. #define INAIYOU    12
  170. #define ISETUMEI 13
  171. #define ILINE    14
  172. #define IUP        15
  173. #define IDOWN    16
  174. #define IKEN    17
  175. #define ICMT    18
  176. #define IID        19
  177. #define ISENTAKU 20
  178. #define IRSENTAKU 21
  179. #define ISAKUJYO 22
  180. #define IRSAKUJYO 23
  181. #define IGATTAI 24
  182. #define IRGATTAI 25
  183. #define ITAG     26
  184. #define IRTAG     27
  185. #define IYOMI     28
  186. #define IRYOMI     29
  187. #define ITAB    30
  188. #define ICR        31
  189. #define IJIKOKU    32
  190. #define IFWAKU  33
  191. #define IFCUR   34
  192. #define IPFKEY  35
  193. #define IKENSAKU 36
  194. #define IKAKUNIN 37
  195. #define IERROR  38
  196.  
  197. /* ログ整理テーブル */
  198. #define LHPHEAD        0        /* HPタイトル */
  199. #define LHP            1        /* ホームパーティ受信 */
  200. #define LHPWRITE    2        /* HPの送信 */
  201. #define LGUEST        3        /* HPのゲスト情報 */
  202. #define LTITLE        4        /* HPのタイトル一覧 */
  203. #define LMAILHEAD    5        /* 電子メールタイトル */
  204. #define LMAIL        6        /* 電子メール受信 */
  205. #define LMWRITE        7        /* 電子メールの送信 */
  206. #define LMRCVHEAD    8        /* 電子メール受信リストタイトル */
  207. #define LRCLHEAD    9        /* 電子メール受信簿タイトル */
  208. #define LSDLHEAD    10        /* 電子メール送信簿タイトル */
  209. #define LNEWSHEAD     11        /* ニュースタイトル */
  210. #define LNEWS        12        /* ニュース */
  211. #define LBBSHEAD     13        /* 掲示板タイトル */
  212. #define LBBS        14        /* 掲示板 */
  213. #define LCBHEAD        15        /* CBタイトル */
  214. #define LNOTEHEAD    16        /* お知らせタイトル */
  215. #define LNOTE        17        /* お知らせ */
  216. #define LBILLHEAD    18        /* 課金情報タイトル */
  217. #define LSINBUNHEAD 19        /* 新聞情報タイトル */
  218. #define LSINBUN        20        /* 新聞情報 */
  219. #define LMYFORUM    21        /* MYFORUM一覧 */
  220. #define LFORUMHEAD    22        /* フォーラムタイトル */
  221. #define LFNEWSHEAD    23        /* フォーラムニュースタイトル */
  222. #define LFNEWS        24        /* フォーラムニュース */
  223. #define LFBBSHEAD    25        /* フォーラム掲示板タイトル */
  224. #define LFBBS        26        /* フォーラム掲示板 */
  225. #define LMESNOHEAD    27        /* フォーラム会議室一覧 */
  226. #define LMESHEAD    28        /* フォーラム会議室タイトル */
  227. #define LFORUM        29        /* フォーラム会議室受信 */
  228. #define LFWRITE        30        /* フォーラムの送信 */
  229. #define LFRTHEAD    31        /* フォーラム会議室タイトル一覧 */
  230. #define LFRSHEAD    32        /* フォーラム会議室検索一覧 */
  231. #define LFRTIMEHEAD 33        /* フォーラムリアルタイム会議 */
  232. #define LLIBNOHEAD    34        /* フォーラムデータライブラリ一覧 */
  233. #define LLIBHEAD    35        /* フォーラムデータライブラリタイトル */
  234. #define LLIBDATA    36        /* フォーラムデータライブラリデータ */
  235. #define LOPTHEAD    37        /* オプション設定 */
  236. #define LWRITE        38        /* その他の送信 */
  237. #define LINFOHEAD    39        /* 情報サービスタイトル */
  238. #define LINFO        40        /* 情報サービス */
  239. #define LMEMBERHEAD 41        /* 会員情報タイトル */
  240. #define LPROF        42        /* 会員情報 */
  241. #define LTENKI        43        /* 天気情報 */
  242. #define LINIT        44        /* オープニング */
  243. #define LTOP        45        /* トップメニュー */
  244. #define LBYEHEAD    46        /* ログアウトタイトル */
  245. #define LPATIOHEAD    47        /* パティオ会議室タイトル */
  246. #define LPGUEST        48        /* パティオ会議室ゲスト情報 */
  247. #define LETC        49        /* その他 */
  248. #define LOGDIRMAX LETC*2+2
  249.  
  250. /*
  251.  *    機能キーコード定義
  252.  */
  253. #define PF1        0x81
  254. #define PF2        0x82
  255. #define PF3        0x83
  256. #define PF4        0x84
  257. #define PF5        0x85
  258. #define PF6        0x86
  259. #define PF7        0x87
  260. #define PF8        0x88
  261. #define PF9        0x89
  262. #define PF10    0x8a
  263. #define S_PF1    0xa1
  264. #define S_PF2    0xa2
  265. #define S_PF3    0xa3
  266. #define S_PF4    0xa4
  267. #define S_PF5    0xa5
  268. #define S_PF6    0xa6
  269. #define S_PF7    0xa7
  270. #define S_PF8    0xa8
  271. #define S_PF9    0xa9
  272. #define S_PF10    0xaa
  273. #define C_PF1    0xc1
  274. #define C_PF2    0xc2
  275. #define C_PF3    0xc3
  276. #define C_PF4    0xc4
  277. #define C_PF5    0xc5
  278. #define C_PF6    0xc6
  279. #define C_PF7    0xc7
  280. #define C_PF8    0xc8
  281. #define C_PF9    0xc9
  282. #define C_PF10    0xca
  283. #define SC_PF1    0xf5
  284. #define SC_PF2    0xf6
  285. #define SC_PF3    0xf7
  286. #define SC_PF4    0xf8
  287. #define SC_PF5    0xf9
  288. #define SC_PF6    0xfa
  289. #define SC_PF7    0xfb
  290. #define SC_PF8    0xfc
  291. #define SC_PF9    0xfd
  292. #define SC_PF10    0xfe
  293. #define UEYA    0x90
  294. #define SITAYA    0x91
  295. #define HIDARIYA 0x92
  296. #define MIGIYA    0x93
  297. #define KAIGYO    0x0d
  298. #define SENTAKU    0xff
  299. #define ESC        0x1b
  300.  
  301. /* ログファイル修正フラグ(foutmode) */
  302. #define F_UPDATE    1
  303. #define F_MEMERR    2
  304.  
  305. extern PCELL far *p_top;
  306. extern PCELL far *p_head;
  307. extern PCELL far *p_tail;
  308. extern char filename[],gfilename[];
  309. extern union REGS regs;
  310. extern struct SREGS sregs;
  311. extern char far *file[];
  312. extern FILE *fd;
  313. extern int cfno;
  314. extern char far *buf1[];
  315. extern char fbuf1[];
  316. extern char far *po;
  317. extern char *dataend;
  318. extern char hpid[],hpmsg[],forummsg[],forumname[];
  319. extern char niftyid[];
  320. extern char heya[],saveheya[],savebuf[];
  321. extern int fmeslibno,pend,jumpon,preno;
  322. extern int gp;
  323. extern char far *logdir[];
  324. extern long jpp,jpplno,savepp,savepplno,fsavepp;
  325. extern char savehpread;
  326. extern long p,p_linecount,savep,sentakuno,sakujyono,tagno;
  327. extern char nmode,savecon,nifmode,savenmode,bunmode,foutmode;
  328. extern int savepno;
  329. extern int fno,maxfno;
  330. extern int line,saveline;
  331. extern int typespeed;
  332. extern int waittimes,titlecount,vrammode,fsortmode,fsort2mode;
  333. extern int autodisptime;
  334. extern char autodispsw;
  335. extern char editer[];
  336. extern char kiridir[];
  337. extern char hatudir[];
  338. extern char titledir[];
  339. extern char keytbl[];
  340. extern char irotbl[];
  341. extern int endmode;
  342. extern int tabno;
  343. extern int topendmode;
  344. extern int yesnomode;
  345. extern int sakujyomode;
  346. extern int editmode;
  347. extern int tabcrmode;
  348. extern int jikokumode;
  349. extern int cutmode;
  350. extern int nextmode;
  351. extern int startmode;
  352. extern char sepamode;
  353. extern int keyshiftmode;
  354. extern int midokumode;
  355. extern int timechkmode;
  356. extern PCELL far *rsv_p;
  357. extern char savsafix[];
  358. extern char nifsafix[];
  359. extern char ESCin[],ESCout[];
  360. extern char far *cutstrtbl[];
  361. extern char far *msgstrtbl[];
  362.  
  363. extern int savekeymode,passmode;
  364. extern int keta,gyo,tmode;
  365. extern char atr;
  366. extern long vramoffset;
  367. extern int kensakukensu;
  368. extern PCELL far *ttop;
  369. extern PCELL far *ttail;
  370. extern PCELL far *ggtop;
  371. extern PCELL far *ggtail;
  372. extern PCELL far *gpo;
  373. extern char nifid[];
  374. extern char kensakumoji[];
  375. extern char *space;
  376. extern char *spalate;
  377. extern int rtnk;
  378. extern char logforum[],loghpid[],logmes[],loglib[],logniftyid[];
  379. extern long sp;
  380. extern int passflag;
  381. extern char erron;
  382. extern time_t lsavetime[];
  383. extern char tagmode,titlemode;
  384. extern char datfile[];
  385. extern char far *datf[];
  386. extern long midokuno;
  387. extern char cmdtbl[15][41];
  388. extern char datfile_s[];
  389. extern int emsno;
  390. extern int ems_count;
  391. extern int ems_lno;
  392. extern int ems_handle;
  393. extern long ems_seg;
  394. extern PCELL far *p_freetop;
  395. extern PCELL3 far *p_tbltop;
  396. extern long forum3msgp;
  397.  
  398. extern int datf_src(char *,int);
  399. extern void loc(int,int);
  400. extern void locate(int,int);
  401. extern void xlocate2(void);
  402. extern void xlocate(void);
  403. extern void scroll(int,int,int,int,int);
  404. extern int getline(void);
  405. extern void setcon(int);
  406. extern void restorecon(int);
  407. extern void cslon(void);
  408. extern void csloff(void);
  409. extern void chglowline(void);
  410. extern void chghighline(void);
  411. extern void clr(void);
  412. extern void allclr(void);
  413. extern void setline(int);
  414. extern void atrset(char);
  415. extern void iro(char);
  416. extern void deforutoiro(void);
  417. extern void print(char *);
  418. extern void keyget(void);
  419. extern void pfdisp(int);
  420. extern void pfset(void);
  421. extern void stsdisp(void);
  422. extern char keyget2(int);
  423. extern void cgetsx(char *,int);
  424. extern int rtncut(char *);
  425. extern void rtncut2(char *);
  426. extern int yesnocheck(char *);
  427. extern void errdisp1(char *);
  428. extern void errdisp2(char *);
  429. extern void errdisp3(char *);
  430. extern void nstatus(int,PCELL far *,int,int,int,int);
  431. extern void topdisp(void);
  432. extern int asctodec(char *);
  433. extern int bunget(PCELL far *,int);
  434. extern void hpread(long,int);
  435. extern char *substrstr(char *,char *);
  436. extern char cnvpfkey(int);
  437. extern void cgetfsx(char *,char *);
  438. extern int filechoice(int);
  439. extern int checkfile(char *);
  440. extern void xxfseek(PCELL far *,long);
  441. extern void xhpread(int);
  442. extern void xnstatus(void);
  443. extern void logclose(int);
  444. extern int logedit1(PCELL far *,int,int);
  445. extern FILE *xxfopen(char *,char *);
  446. extern FILE *fopen_sub(char *,int);
  447. extern FILE *xfopen(char *);
  448. extern int xfclose(void);
  449. extern int xfseek(long);
  450. extern long xftell(void);
  451. extern int xfgetc(void);
  452. extern int xfeof(void);
  453. extern char *xfgets(char *,int);
  454. extern void xstrncpy(char *,char *);
  455. extern void xxstrncpy(char *,char *,int);
  456. extern void xxstrncpy80(char *,char *);
  457. extern void xxstrncpy50(char *,char *);
  458. extern int xstrncmp(char *,char *);
  459. extern int xstrcmp(char *,char *);
  460. extern void set_cmdcopy(char *,int,PCELL far *,char *,int);
  461. extern int comand_disp(PCELL far *,int);
  462. extern void help(int);
  463. extern void strncat80(char *,char *);
  464. extern void str79set(char *);
  465.  
  466. struct    dir2_tree {
  467.     struct dir2_tree *next;
  468.     struct dir2_tree *back;
  469.     struct stat         sbuf;
  470.     char             name[13];
  471.     char far         *file;
  472. };
  473.  
  474. extern int        set2_tree(char *);
  475. extern void        tree2free(void);
  476. extern struct    dir2_tree *tree2_top;
  477. extern struct    dir2_tree *tree2_pos;
  478.  
  479. #define _fstrcpy    strcpy
  480. #define _fstrncpy    strncpy
  481. #define    _fstrcmp    strcmp
  482. #define _fmemset    memset
  483. #define _fmemcpy    memcpy
  484. #define _fmemcmp    memcmp
  485.  
  486. /*
  487. extern char far *_fstrcpy(char far *,char far *);
  488. extern char far *_fstrncpy(char far *,char far *,int);
  489. extern int _fstrcmp(char far *,char far *);
  490. extern char far *_fmemset(char far *,char,int);
  491. extern char far *_fmemcpy(char far *,char far *,int);
  492. extern int _fmemcmp(char far *,char far *,int);
  493. */
  494.  
  495. extern void grh_disp(char *,int);
  496. extern void grh_sub(long,long);
  497. extern int nifoutopen(void);
  498. extern int nifoutropen(void);
  499. extern int nifoutput(PCELL far *);
  500. extern int nifoutget(void);
  501. extern void nifoutclose(int);
  502. extern void get_fdir(char *,char *);
  503. extern int keycheck(void);
  504. extern char *memgeterror;
  505. extern void    waku_disp(int,int,int,int,char *,char *);
  506. extern char YEAR[],year[],mon[],mon2[],mday[],hour1[],hour2[],min[],sec[],ampm[];
  507. extern void dateget(void);
  508. extern void clr1(char);
  509. extern void clr2(void);
  510. extern PCELL far *cmtsepa(PCELL far *);
  511. extern void kprintf(char *);
  512. extern void eprintf(char *);
  513.  
  514. extern PCELL far *tbl_alloc(int);
  515. extern void tbl_free(PCELL far *);
  516. extern void tbl_set(PCELL far *);
  517. extern int ems_get(void);
  518. extern int ems_add(int);
  519. extern int ems_set(int);
  520. extern int ems_check(void);
  521. extern long ems_getseg(void);
  522. extern int ems_free(void);
  523.